/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package T1.controller;

import T1.view.Produto;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.primefaces.model.UploadedFile;

/**
 *
 * @author Leonardo Nicorena <lnicorena at inf.ufsm.br>
 */
@ManagedBean
@SessionScoped
public class ProdutoBean implements Serializable {

    private Produto produto;
    private List<Produto> produtoLista;
    private String filtro;
    private Integer filtrocat;
    private Integer catid;
    private UploadedFile file;

    /**
     * Creates a new instance of ProdutoBean
     */
    public ProdutoBean() {
        produto = new Produto();
        produtoLista = new ArrayList<Produto>();
        filtro = "";
        catid = (Integer) FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("cid");
    }

    public UploadedFile getFile() {
        return file;
    }

    public void setFile(UploadedFile file) {
        this.file = file;
    }

    public void upload() {
        if (file != null) {
            FacesMessage msg = new FacesMessage("Succesful", file.getFileName() + " is uploaded.");
            FacesContext.getCurrentInstance().addMessage(null, msg);
        }
    }

    public Produto getProduto() {
        return produto;
    }

    public void setProduto(Produto produto) {
        this.produto = produto;
    }

    public List<Produto> getProdutoLista() {
        return produtoLista;
    }

    public void setProdutoLista(List<Produto> produtoLista) {
        this.setProdutoLista(produtoLista);
    }

    public void salvarProduto() {
        produtoLista.add(produto);
        produto = new Produto();
    }

    public List<Produto> getProdutoListaByCategoria() {
        Integer f = (int) filtrocat;
        if (f > 0) {
            List<Produto> lista = new ArrayList<Produto>();
            for (Produto p : produtoLista) {
                if (p.getCategoria() == f) {
                    lista.add(p);
                }
            }
            return lista;
        } else {
            return null;
        }
    }

    public List<Produto> getProdutoListaByNome() {
        List<Produto> lista = new ArrayList<Produto>();
        for (Produto p : produtoLista) {
            if (p.getNome().contains(getFiltro())) {
                lista.add(p);
            }
        }
        return lista;
    }

    public String getFiltro() {
        return filtro;
    }

    public void setFiltro(String filtro) {
        this.filtro = filtro;
    }

    public Integer getFiltrocat() {
        return filtrocat;
    }

    public void setFiltrocat(Integer filtrocat) {
        this.filtrocat = filtrocat;
    }

    public Integer getCatid() {
        return catid;
    }

    public void setCatid(Integer catid) {
        this.catid = catid;
    }
}
